/*
 * Written and copyright 2001-2004 Tobias Minich. Distributed under the GNU
 * General Public License; see the README file. This code comes with NO
 * WARRANTY.
 * 
 * XML.java
 * 
 * Created on 22.03.2004
 *
 */
package org.gudy.azureus2.ui.console.commands;

import java.io.FileOutputStream;
import java.util.List;

import org.gudy.azureus2.core3.stats.StatsWriterFactory;
import org.gudy.azureus2.core3.stats.StatsWriterStreamer;
import org.gudy.azureus2.ui.console.ConsoleInput;

/**
 * @author tobi
 */
public class XML extends IConsoleCommand {

    public XML() {
        super("xml");
    }

    public String getCommandDescriptions() {
        return ("xml [<file>]\t\t\t\tOutput stats in xml format (to <file> if given)");
    }

    public void execute(String commandName, ConsoleInput ci, List args) {
        StatsWriterStreamer sws = StatsWriterFactory.createStreamer(ci.getCore());
        String file = null;
        if ((args != null) && (!args.isEmpty()))
            file = (String) args.get(0);
        if (file == null) {
            try {
                ci.out.println("> -----");
                sws.write(ci.out);
                ci.out.println("> -----");
            } catch (Exception e) {
                ci.out.println("> Exception while trying to output xml stats:" + e.getMessage());
            }
        } else {
            try {
                FileOutputStream os = new FileOutputStream(file);

                try {

                    sws.write(os);

                } finally {

                    os.close();
                }
                ci.out.println("> XML stats successfully written to " + file);
            } catch (Exception e) {
                ci.out.println("> Exception while trying to write xml stats:" + e.getMessage());
            }
        }
    }
}
